package uk.co.cngames.geekart;

import java.io.File;

import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Point;
import android.view.Display;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Toast;

public class Main extends Activity {

	LinearLayout myGallery;
	int toastWidth = 500;
	int toastHeight = 500;
	int toastPadding = 20;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		setContentView(R.layout.activity_main);
		
		init();

		String externalStorageDirectoryPath = Environment.getExternalStorageDirectory().getAbsolutePath();
		String targetPath = externalStorageDirectoryPath + "/GeekArt/";

		Toast.makeText(getApplicationContext(), targetPath, Toast.LENGTH_LONG).show();
		File targetDirector = new File(targetPath);

		File[] files = targetDirector.listFiles();
		for (File file : files) {
			myGallery.addView(insertPhoto(file.getAbsolutePath()));
		}
	}

	private void init() {
		// Links to XML
		myGallery = (LinearLayout) findViewById(R.id.mygallery);
		
		// Get window size
		toastWidth = getBaseContext().getResources().getDisplayMetrics().widthPixels;
		toastHeight = getBaseContext().getResources().getDisplayMetrics().heightPixels;
	}

	public View insertPhoto(String path) {
		Bitmap bm = decodeSampledBitmapFromUri(path, toastWidth - toastPadding, toastHeight - toastPadding);

		LinearLayout layout = new LinearLayout(getApplicationContext());
		layout.setLayoutParams(new LayoutParams(toastWidth, toastHeight)); 
		layout.setGravity(Gravity.CENTER);

		ImageView imageView = new ImageView(getApplicationContext());
		imageView.setLayoutParams(new LayoutParams(toastWidth - toastPadding, toastHeight - toastPadding));
		imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
		imageView.setImageBitmap(bm);

		layout.addView(imageView);
		return layout;
	}

	public Bitmap decodeSampledBitmapFromUri(String path, int reqWidth,
			int reqHeight) {
		Bitmap bm = null;

		// First decode with inJustDecodeBounds=true to check dimensions
		final BitmapFactory.Options options = new BitmapFactory.Options();
		options.inJustDecodeBounds = true;
		BitmapFactory.decodeFile(path, options);

		// Calculate inSampleSize
		options.inSampleSize = calculateInSampleSize(options, reqWidth,
				reqHeight);

		// Decode bitmap with inSampleSize set
		options.inJustDecodeBounds = false;
		bm = BitmapFactory.decodeFile(path, options);

		return bm;
	}

	public int calculateInSampleSize(BitmapFactory.Options options,
			int reqWidth, int reqHeight) {
		// Raw height and width of image
		final int height = options.outHeight;
		final int width = options.outWidth;
		int inSampleSize = 1;

		if (height > reqHeight || width > reqWidth) {
			if (width > height) {
				inSampleSize = Math.round((float) height / (float) reqHeight);
			} else {
				inSampleSize = Math.round((float) width / (float) reqWidth);
			}
		}

		return inSampleSize;
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.activity_main, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {

		Intent i;

		switch (item.getItemId()) {
		case R.id.menu_settings:
			i = new Intent("uk.co.cngames.geekart.SETTINGS");
			startActivity(i);
		break;
		case R.id.menu_about:
			i = new Intent("uk.co.cngames.geekart.ABOUT");
			startActivity(i);
		break;
		case R.id.menu_exit:
			finish();
		break;
		case R.id.menu_browser:
			i = new Intent("uk.co.cngames.geekart.BROWSER");
			startActivity(i);
		break;
		}
		return false;
	}
}
